import { defineStore } from 'pinia';

export const useUserStore = defineStore('user', {
    state(): {
        menus: IMenu[];
        username: string;
        lang: string | null
    } {
        return {
            menus: [],
            username: '未登录',
            lang: localStorage.getItem("lang") || 'zh'
        };
    },
    getters: {
        // 生成一个 在 Nav.vue 里面用于生成 动态菜单的数组
        activeMenus() {
            // 1. 先找出所有的一级菜单
            const arr: IActiveMenu[] = this.menus.filter(item => item.parentId === 0);
            // 2. 找出所有对应的一级菜单的二级菜单，放到 1级菜单的 chidren 数组里面
            this.menus.forEach(item => {
                // 找到我对应 1级菜单，把我就 1级的 children 里面的一个对象 , 并且 hidden 如果是 0 才是菜单
                const p = arr.find(p => p.id === item.parentId && item.hidden === 0);
                if (p) {
                    if (!p.children) {
                        p.children = [];
                    }
                    p.children.push(item);
                }
            });

            return arr;
        },
    },
    actions: {
        changeLang(command: any) {
            this.lang == command
        }
    }

});
